package org.skywork.top.core.algorithm.list;


import org.skywork.top.core.algorithm.support.ListNode;

/**
 * 相交链表
 */
public class no_160 {


    /**
     * 给你两个单链表的头节点 headA 和 headB ，
     * 请你找出并返回两个单链表相交的起始节点。
     * 如果两个链表不存在相交节点，返回 null 。
     */
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {

        if(headA == null || headB == null){
            return null;
        }
        return getIntersectionNode0(headA, headB);
    }

    private ListNode getIntersectionNode0(ListNode headA, ListNode headB) {
        while (headA != null){
            ListNode temp = headB;
            while (temp != null){
                if(headA == temp){
                    return headA;
                }
                temp = temp.next;
            }
            headA = headA.next;
        }
        return null;
    }

}
